package com.yunxin.admin.system.application;


import com.yunxin.admin.system.application.command.AddRoleCommand;
import com.yunxin.admin.system.application.command.UpdateRoleCommand;
import com.yunxin.core.admin.domain.AdminUser;

import java.util.List;

/**
 * 角色业务接口层
 *
 * @author zero°
 * @since 2023-05-22
 */
public interface RoleApplicationService {

    /**
     * 保存角色
     *
     * @param command command
     * @return boolean
     */
    boolean saveRole(AddRoleCommand command);

    /**
     * 保存角色
     *
     * @param command command
     * @return boolean
     */
    boolean updateRole(UpdateRoleCommand command);

    /**
     * 修改角色状态
     *
     * @param roleId 角色ID
     * @param status 角色状态(1:启用；0:禁用)
     * @return boolean
     */
    boolean updateRoleStatus(Long roleId, Integer status);

    /**
     * 批量删除角色
     *
     * @param ids 角色ID，多个使用英文逗号(,)分割
     * @return boolean
     */
    boolean deleteRoles(String ids);

    /**
     * 修改角色的资源权限
     *
     * @param roleId  roleId
     * @param menuIds menuIds
     * @return boolean
     */
    boolean updateRoleMenus(Long roleId, List<Long> menuIds);

    /**
     * 获取所有角色code获取所有用户
     * @return
     */
    List<AdminUser> userListByRoleCode(String code,Integer teamId);

    List<AdminUser> getUserList(String code,List<Integer> teamIds);

    List<AdminUser> telephoneListBySalesmanId(String code,Integer salesmanId,Integer teamId);

}
